//package com.ly.mpayment.persist.service.slow;
//
//import com.alipay.api.response.AlipayTradeWapPayResponse;
//import com.ly.mpayment.core.util.*;
//import com.ly.mpayment.persist.entity.Mobile;
//import com.ly.mpayment.persist.entity.slow.SlowOrder;
//import com.ly.mpayment.persist.entity.slow.SlowProduct;
//import com.ly.mpayment.persist.hibernate.Page;
//import com.ly.mpayment.persist.service.AbstractService;
//import com.ly.mpayment.rest.recharge.RechargeRest;
//import com.ly.mpayment.rest.system.slow.AliPayRest;
//import com.ly.mpayment.rest.system.slow.AlipayTradePrecreateModel;
//import com.ly.mpayment.rest.system.slow.WechatRest;
//import net.sf.json.JSONObject;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.io.Serializable;
//import java.math.BigDecimal;
//import java.util.List;
//import java.util.Map;
//
//@Service
//public class SlowOrderServiceImpl extends AbstractService<SlowOrder,Serializable> implements SlowOrderService {
//
//	@Autowired
//	private SlowProductService slowProductService;
//
//	@Autowired
//	private WechatRest wechatRest;
//
//	@Autowired
//	private RechargeRest rechargeRest;
//
//	@Autowired
//	private AliPayRest aliPayRest;
//
//	@Override
//	public Page<SlowOrder> findPageSlowOrder(Map<String, Object> parameters, int start, int pageSize) {
//		String hql = "select c from SlowOrder c where 1 = 1 #[ and c.phoneNum = :phoneNum ]# #[ and c.operators = :operators ]# #[ and c.province = :province ]#"
//				+ " #[ and c.city = :city ]# #[ and c.price = :price ]# #[ and c.rechargeState = :rechargeState ]# #[ and c.isLock = :isLock ]# "
//				+ " #[ and c.wxOrder = :wxOrder ]# #[ and c.payState = :payState ]# #[ and c.payType = :payType ]#  ";
//
//		if(parameters.containsKey(":importTime")){
//			hql += " and c.commitTime >= '".concat(parameters.get(":importTime").toString()).concat("'");
//			parameters.remove(":importTime");
//		}
//		if(parameters.containsKey(":endtime")){
//			hql += " and c.commitTime <= '".concat(parameters.get(":endtime").toString()).concat("'");
//			parameters.remove(":endtime");
//		}
//
//		hql += " order by c.commitTime desc ";
//		return this.findPageByNamed(hql, parameters, start, pageSize);
//	}
//
//	@Override
//	public boolean saveSlowOrder(SlowOrder order) {
//		if(order != null){
//			this.saveOrUpdateData(order);
//			return true;
//		}
//		return false;
//	}
//
//	@Override
//	public boolean updateSlowOrder(SlowOrder order) {
//		if(order != null){
//			this.updateEntity(order);
//			return true;
//		}
//		return false;
//	}
//
//	@Override
//	public SlowOrder findById(String id) {
//		return this.findOneObject("select c from SlowOrder c where c.orderuuid = ?", id);
//	}
//
//	@Override
//	public boolean deleteSlowOrder(String string) {
//		SlowOrder order = findById(string);
//		if(order != null){
//			order.setRechargeState(0);
//			this.updateEntity(order);
//			return true;
//		}
//		return false;
//	}
//
//	@Override
//	public void updateLockOrder(String orderuuid) {
//		SlowOrder order = findById(orderuuid);
//		if(order != null && order.getRechargeState() == 5){
//			order.setRechargeState(1);
//			this.updateEntity(order);
//		}
//	}
//
//	@Override
//	public boolean updateSlowOrders(List<SlowOrder> orders) {
//		if(!orders.isEmpty()){
//			for(SlowOrder order : orders){
////				SlowOrder slow = findSlowOrder(order.getPhoneNum(), order.getPrice());
//				SlowOrder slow = findSlowOrder(order.getWxOrder());
//				if(slow != null){
//					if(order.getRechargeState() == 2){
//						slow.setRechargeState(2);
//					}else if(order.getRechargeState() == 3){
//						//充值失败扣除支付总金额
//						slow.setRechargeState(3);
////						SlowList lists = slow.getSlowList();
////						lists.setPayment(lists.getPayment().subtract(slow.getPayPrice()));
////						listService.updateSlowList(lists);
//					}else{
//						slow.setRemark("未知原因,需人工核实");
//					}
//					this.updateEntity(slow);
//				}
//			}
//			return true;
//		}
//		return false;
//	}
//
//
//	private SlowOrder findSlowOrder(String wxOrder) {
//		if(StringUtils.isBlank(wxOrder)){
//			return null;
//		}
//		return this.findUnique("select s from SlowOrder s  where s.isLock = 1 and s.rechargeState = 1 and s.wxOrder = ?", wxOrder);
//	}
//
//	@Override
//	public SlowOrder findSlowOrder(String phoneNum, BigDecimal price) {
//		return this.findOneObject("select s from SlowOrder s  where s.isLock = 1 and s.rechargeState = 1 and s.phoneNum = ? and s.payPrice = ?", phoneNum,price);
//	}
//
//	@Override
//	public SlowOrder findByOutTradeNo(String outTradeNo) {
//		return this.findOneObject("select c from SlowOrder c where c.outTradeNo = ?", outTradeNo);
//	}
//
//	@Override
//	public SlowOrder commitSlowOrder(String data) {
//		JSONObject json = JsonUtils.converToJson(data);
//		if(StringUtils.isBlank(json.getString("proId")) || StringUtils.isBlank(json.getString("phone"))){
//			return null;
//		}
//		SlowProduct slowProduct = this.slowProductService.findById(json.getString("proId"));
//		if(slowProduct == null || slowProduct.getStatus() == 0){
//			logger.info("不支持的产品:"+json.getString("proId"));
//			return null;
//		}
//		Mobile mobile = rechargeRest.checkMobile(json.getString("phone"));
//		if(mobile == null){
//			logger.info("不支持的号码:"+json.getString("phone"));
//			return null;
//		}
//		SlowOrder slowOrder = new SlowOrder();
//		slowOrder.setPhoneNum(json.getString("phone"));
//		slowOrder.setOperators(slowProduct.getOperator());
//		slowOrder.setProvince(mobile.getProvince());
//		slowOrder.setCity(mobile.getCity());
//		slowOrder.setPrice(new BigDecimal(slowProduct.getPrice()));
//		slowOrder.setDiscount(slowProduct.getDiscount());
//		slowOrder.setPayPrice(slowProduct.getDiscountAmount());
//		slowOrder.setRechargeState(Config.status[5]);
//		slowOrder.setImportTime(DateUtils.getNowDate());
//		//slowOrder.setEndTime();
//		slowOrder.setRemark("");
//		slowOrder.setWxOrder("");
//		//微信支付状态 1支付中 2支付成功 3支付失败
//		slowOrder.setPayState(1);
//		slowOrder.setOpenId("");
//
//		slowOrder.setTradeType("");
//		slowOrder.setErrCodeDes("");
//		slowOrder.setBankType("");
//		slowOrder.setTotalFee("");
//		slowOrder.setCashFee("");
//
//		slowOrder.setPayType(json.containsKey("payType") ? json.getString("payType"): "wechat");
//
//		if(this.saveSlowOrder(slowOrder)){
//			switch (slowOrder.getPayType()){
//				case "wechat":
//					try {
//						//保存订单
//						//微信下单
//						com.alibaba.fastjson.JSONObject jsonObject = wechatRest.commitOrder(slowProduct.getDiscountAmount().multiply(new BigDecimal(100)).intValue(),slowProduct.getOperator() + " " + slowProduct.getDiscountAmount() +"元");
//						if(jsonObject == null){
//							logger.info("下单失败:");
//							return null;
//						}
////						//支付完成时间
////						slowOrder.setTimeEnd(DateUtils.getNowDateToString());
//						//微信商户订单
//						slowOrder.setOutTradeNo(jsonObject.getString("out_trade_no"));
//						slowOrder.setCommitTime(DateUtils.getNowDate());
//						slowOrder.setWxShopId(jsonObject.getString("mchid"));
//						this.updateSlowOrder(slowOrder);
//						slowOrder.setRemark(jsonObject.getString("h5_url"));
//						return slowOrder;
//						// 下单成功
//					} catch (Exception e) {
//						e.printStackTrace();
//						//下单失败
//					}
//					break;
//				case "alipay":
//					//微信商户订单
//					slowOrder.setOutTradeNo(wechatRest.wxOrderNo());
//					AlipayTradeWapPayResponse alipayTradeWapPayResponse = aliPayRest.payTradePrecreate(slowOrder,slowProduct.getOperator() + " " + slowProduct.getDiscountAmount() +"元");
//					if(alipayTradeWapPayResponse == null){
//						logger.info("下单失败:");
//						return null;
//					}
////					//支付完成时间
////					slowOrder.setTimeEnd(DateUtils.getNowDateToString());
//					slowOrder.setCommitTime(DateUtils.getNowDate());
//					slowOrder.setWxShopId("");
//					if(this.updateSlowOrder(slowOrder)){
//						SlowOrder resultOrder = new SlowOrder();
//						BeanUtils.copyProperties(slowOrder,resultOrder);
//						resultOrder.setRemark(alipayTradeWapPayResponse.getBody());
//						return resultOrder;
//					}
//			}
//		}
//		return null;
//	}
//
//	@Override
//	public SlowOrder queryOrder(String data) {
//		return this.findById(com.alibaba.fastjson.JSONObject.parseObject(data).getString("oderId"));
//	}
//}
